title: "选择哪个分支?"
categories:
- "ahk"
tags:
- "ahk"
draft: true
选择哪个分支?
对于绝大多数用户这个问题的答案都应该是 AutoHotkey_L,那么这个问题还是问题吗?对于新人我还是有必要简要介绍它们(这是他们的主要困惑之一),以便对这些名称及它们的含义有个清晰的认识,同时明白自己选择的原因(顺便也了解些典故)。 图 AutoHotkey 的历史和当前分支一览(本图来源)
AutoHotkey_L 指主要由 Lexikos 在原 AutoHotkey Basic(见下文)源码基础上开发的分支,具体包括从1.0.48.05 L4 版本号 (更新记录为 Revision 4,发布于 2008-07-18)至今的所有版本,更新记录请参阅 AutoHotkey_L 更新记录。有时会被笼统的称为“AutoHotkey 1.1“(目前在下载页面即是如此)。
它在 AutoHotkey Basic 基础上增加或增强的主要功能(详细说明请参阅 AutoHotkey_L 新特性):
功能的增强是我们选择的重要原因之一,在如今的 Windows 主流系统中不支持 Unicode 的脚本用处还有多大呢?尤其对于中文用户。
功能的增强是其中一个方面,主流的支持则是另一个重要原因。与其他比较,AutoHotkey_L 是目前 AutoHotkey 社区用户使用的主流分支:
所以,如果您在犹豫,那么选择 AutoHotkey_L 吧。
该分支中因编码和平台类型分成三种构建(build):
Unicode 32-bit - recommended for new scripts. Unicode 64-bit - for increased performance on 64-bit systems. ANSI 32-bit - better compatibility with some older scripts.
如下载页面的说明所示,大多数用户请选择 Unicode 32-bit,但这个链接的目标文件仅有主程序(即一个 AutoHotkey.exe,适合偏爱绿色版的老用户)。建议直接下载页面开始处的安装包(Installer),其中包含了这三种构建和后面的编译器和离线帮助(英文的,中文帮助请在底部链接处下载)并在安装时选择 Unicode 32-bit 即可。
Unicode 64-bit 仅能运行于 64 位系统,至于比较此时的 32 位构建其性能有增强多少还没看到有比较数据。 ANSI 32-bit 的兼容性主要指运行为 AutoHotkey Basic 编写的脚本而言,新用户无需考虑。
注:若未特别说明,以后本专栏中的代码的测试版本均为 AutoHotkey_L Unicode 32-bit。一般而言,AutoHotkey_L 及其他基于 AutoHotkey_L 分支的版本(如 AutoHotkey_H)应该能正常运行这些代码。
AutoHotkey v2 由 Lexikos 根据 Chris Mallett(AutoHotkey Basic 作者)对 AutoHotkey 未来的计划基于 AutoHotkey_L 代码开发,目前仍在测试过程中,AutoHotkey v2 只有 Unicode 构建(含 32 和 64 位)。目前在开发过程中的许多新特性都会合并到 AutoHotkey_L 中。
开发状态:它正在调整语法(带来不兼容的许多变化)和功能,包含了许多细节改进。由于许多细节仍在调整中、功能和语法尚未定型,文档也严重过时,且使用这个版本后您可能需要在每个新版发布时修改自己的代码,同时也无法直接执行论坛上大量的脚本。
对于普通用户及常规用途:目前该分支语法和功能尚未定型,较 v1.1 的更新情况也未全部写入日志,且相应的文档过时,所以不推荐日常使用。
对 于其他用户:该分支将很可能是 AutoHotkey 第三代(尽管版本为 v2),虽然目前含有一些缺陷,不过已经可以使用,所以欢迎有经验的老用户和开发者下载测试。关于这个分支的语法、功能等的讨论正在官网热烈进行,如果希 望了解目前状态或反馈相关的建议、意见(作者也活跃其中):
使用 AutoHotkey(Basic 至 _L)那么长时间以来,您不是一直在抱怨这个吐嘈那个吗,还等什么呢?与作者直接交流吧,也许正式版出来时其中某个功能就是您的提议呢。
AutoHotkey_H 是由 HotkeyIt 合并了原有 AutoHotkey.dll(介绍见下文)并在AutoHotkey_L(及 AutoHotkey v2)基础上开发的增强分支。它没有使用自己的版本号,一般与 AutoHotkey_L(及 AutoHotkey v2)并行开发,最近更新时间为 2013-08-11。
一般提到 AutoHotkey_H 时,实际上包含了 AutoHotkey.dll 和 AutoHotkey.exe (H 版本) 及相关文件。其中:
它实现了多线程、支持动态运行 AutoHotkey 代码、在 #Includes 中使用通配符或动态 #Includes、简化了 DLL 尤其是 Windows API 的调用,适用于已经使用 AutoHotkey 较长时间的有经验用 户。其中的帮助仅说明了在 AutoHotkey_L 外有修改或增强部分的内容,所以需要与 AutoHotkey_L 帮助一起使用。 AutoHotkey_H 功能上有所增强,不过用户群较小(可能测试不充分)、不易获得支持,同时帮助文件比较粗糙(尽管有译成中文的版本),更新较不稳定。因此,新用户无需考虑。
这个分支的水很深,不过如果您有一定编程经验,我觉得可以试试。
对于出现过的其他历史版本,下面尽可能用一句话简单介绍以供了解,不建议使用。
看到这里您是不是后悔了,长长的篇幅看下来,我就没有选择啊?哈哈,您也不会再为版本困惑了嘛。